unit Unit37; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, sqldb, db,
  DBGrids, Unit1;

type

  { TForm37 }

  TForm37 = class(TForm)
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;
    SQLQuery1: TSQLQuery;
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
  public
    codigo_producto : string;
    precio1 : string;
    precio2 : string;
    precio3 : string;
    precio4 : string;
    nombre_producto : string;
    por_codigo : boolean;
    iva_producto : string;
    impint_producto : string;
  end; 

var
  Form37: TForm37; 

implementation

{ TForm37 }

procedure TForm37.FormShow(Sender: TObject);
var
  producto : string;
  QueryString : string;
  
begin
  if SQLQuery1.Active = True then
    SQLQuery1.Close;
    
  codigo_producto := '';
  precio1 := '';
  precio2 := '';
  precio3 := '';
  precio4 := '';
  nombre_producto := '';

  if por_codigo = true then
    producto := InputBox('Búsqueda de Productos', 'Ingrese código del producto:', '')
  else
    producto := InputBox('Búsqueda de Productos', 'Ingrese parte del nombre del producto:', '');

  if producto <> '' then
  begin
    if por_codigo = true then
      QueryString := 'select vw_stock.prd_cdg, vw_stock.prd_nombre, vw_stock.prd_descripcion, producto.prd_precio1, '
        + 'producto.prd_precio2, producto.prd_precio3, producto.prd_precio4, '
        + 'stk_cantidad, prd_iva, prd_impint from vw_stock, producto where vw_stock.prd_cdg = '
        + producto + ' and suc_nombre = ''' + Form1.mi_sucursal
        + ''' and vw_stock.prd_cdg = producto.prd_cdg order by prd_nombre'
    else
      QueryString := 'select vw_stock.prd_cdg, vw_stock.prd_nombre, vw_stock.prd_descripcion, producto.prd_precio1, '
        + 'producto.prd_precio2, producto.prd_precio3, producto.prd_precio4, '
        + 'stk_cantidad, prd_iva, prd_impint from vw_stock, producto where vw_stock.prd_nombre ilike ''%'
        + producto + '%'' and suc_nombre = ''' + Form1.mi_sucursal
        + ''' and vw_stock.prd_cdg = producto.prd_cdg order by prd_nombre';

    SQLQuery1.SQL.Text := QueryString;
    
    SQLQuery1.Open;
    
    DBGrid1.Columns[0].Title.Caption := 'Código';
    DBGrid1.Columns[1].Title.Caption := 'Producto';
    DBGrid1.Columns[2].Title.Caption := 'Descripción';
    DBGrid1.Columns[3].Title.Caption := 'Precio 1';
    DBGrid1.Columns[4].Title.Caption := 'Precio 2';
    DBGrid1.Columns[5].Title.Caption := 'Precio 3';
    DBGrid1.Columns[6].Title.Caption := 'Precio 4';
    DBGrid1.Columns[7].Title.Caption := 'Stock';
    
    DBGrid1.Columns[0].Width := 60;
    DBGrid1.Columns[1].Width := 110;
    DBGrid1.Columns[2].Width := 290;
    DBGrid1.Columns[3].Width := 80;
    DBGrid1.Columns[4].Width := 80;
    DBGrid1.Columns[5].Width := 80;
    DBGrid1.Columns[6].Width := 80;
    DBGrid1.Columns[7].Width := 60;

    
    DBGrid1.Columns[8].Visible := False;
    DBGrid1.Columns[9].Visible := False;
    
    TColumn(DBGrid1.Columns[2]).DisplayFormat := '$ ####0.00';
    TColumn(DBGrid1.Columns[3]).DisplayFormat := '$ ####0.00';
    TColumn(DBGrid1.Columns[4]).DisplayFormat := '$ ####0.00';
    TColumn(DBGrid1.Columns[5]).DisplayFormat := '$ ####0.00';
  end
  else
    Close;
end;

procedure TForm37.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  por_codigo := false;

  if SQLQuery1.Active = True then
    SQLQuery1.Close;
end;

procedure TForm37.FormCreate(Sender: TObject);
begin
  SQLQuery1.DataBase := Form1.PQConnection1;
  SQLQuery1.Transaction := Form1.SQLTransaction1;
end;

procedure TForm37.DBGrid1CellClick(Column: TColumn);
begin
  codigo_producto := SQLQuery1.FieldByName('prd_cdg').AsString;
  nombre_producto := SQLQuery1.FieldByName('prd_nombre').AsString;
  precio1 := SQLQuery1.FieldByName('prd_precio1').AsString;
  precio2 := SQLQuery1.FieldByName('prd_precio2').AsString;
  precio3 := SQLQuery1.FieldByName('prd_precio3').AsString;
  precio4 := SQLQuery1.FieldByName('prd_precio4').AsString;
  iva_producto := SQLQuery1.FieldByName('prd_iva').AsString;
  impint_producto := SQLQuery1.FieldByName('prd_impint').AsString;
  Close;
end;


initialization
  {$I unit37.lrs}

end.

